package GUI;

import java.awt.*;

/**
 * Calsse responsável por manter as informações para a inclusão de um texto na
 * área de jogo.
 *
 * @author (R. Soares)
 * @version (1.0 - 24.05.2010)
 */
public class TextoGUI
{
    // Variáveis de Instância --------------------------------------------------*
    private String _texto;
    private Font _fonte;
    private int _coordenadaX;
    private int _coordenadaY;
    private boolean _visibilidade;


    // Contrutores -------------------------------------------------------------- *
    /**
     * Construtor da classe JogoGUI
     */
    public TextoGUI(String texto, int tamanho, int coordenadaX, int coordenadaY)
    {
        _texto = texto;
        _coordenadaX = coordenadaX;
        _coordenadaY = coordenadaY;
        _fonte = new Font("Courier", Font.BOLD, tamanho);

        _visibilidade = false;

    }

    // Métodos ---------------------------------------------------------------------*

    /**
     * Método que retorna o texto que deve ser impresso na tela
     *
     * @return  String - Texto a ser impresso na tela
     */
    public String getTexto()
    {
        return _texto;
    }

    /**
     * Método que retorna a coordenada X do texto que deve ser impresso na tela
     *
     * @return  int - Coordenada X do texto a ser impresso
     */
    public int getCoordenadaX()
    {
        return _coordenadaX;
    }

    /**
     * Método que retorna a coordenada Y do texto que deve ser impresso na tela
     *
     * @return  int - Coordenada Y do texto a ser impresso
     */
    public int getCoordenadaY()
    {
        return _coordenadaY;
    }

    /**
     * Método que retorna a fonte do texto que deve ser impresso na tela
     *
     * @return  Font - Fonte do texto a ser impresso
     */
    public Font getFonte()
    {
        return _fonte;
    }

    /**
     * Torna o texto visivel. Se ele já estiver visivel, não faz nada.
     */
    public void tornaVisivel()
    {
        _visibilidade = true;
        draw();
    }

    /**
     * Torna o texto invisivel. Se ele já estiver invisivel, não faz nada.
     */
    public void tornaInvisivel()
    {
        erase();
        _visibilidade = false;
    }

    /**
     * Apaga e Redesenha o texto, atualizando.
     *
     * @param  String - texto - Novo texto para a impressão
     */
    public void atualizarTexto(String texto)
    {
        erase();
        _texto = texto;
        draw();
    }

    /**
     * Desenha o texto na tela.
     */
    private void draw()
    {
        if(_visibilidade)
        {
           TelaJogo tela = TelaJogo.retornaTela();
            tela.drawTexto(this, _texto, _fonte, _coordenadaX, _coordenadaY);
        }
    }

    /**
     * Apaga o texto da tela
     */
    private void erase()
    {
        if(_visibilidade) {
            TelaJogo tela = TelaJogo.retornaTela();
            tela.apagarTexto(this);
        }
    }
}
